package com.southwind.controller;


import com.southwind.entity.User;
import com.southwind.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.stereotype.Controller;

import javax.servlet.http.HttpSession;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 */
@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    /**
     * 页面重定向，根据传入的子路径拼接完整URL。
     *
     * @param url 子路径
     * @return 完整的视图路径
     */

    @GetMapping("/{url}")
    public String redirect(@PathVariable("url") String url){
        return "/user/"+url;
    }

    /**
     * 用户登出，失效HttpSession。
     *
     * @param session HttpSession对象
     * @return 视图名称，登录页面
     */

    @GetMapping("/logout")
    public String logout(HttpSession session){
        session.invalidate();
        return "login";
    }
    /**
     * 添加新用户，保存到数据库。
     *
     * @param user 新用户对象
     * @return 重定向到用户列表页面
     */
    @PostMapping("/add")
    public String add(User user){
        this.userService.save(user);
        return "redirect:/sysadmin/userList";
    }
    /**
     * 根据ID查找用户，准备编辑操作。
     *
     * @param id 用户ID
     * @param model Spring MVC模型对象，用于传递数据到视图
     * @return 编辑用户页面
     */

    @GetMapping("/findById/{id}")
    public String findById(@PathVariable("id") Integer id, Model model){
        User user = this.userService.getById(id);
        model.addAttribute("user", user);
        return "/sysadmin/updateUser";
    }

    @PostMapping("/update")
    public String update(User user){
        this.userService.updateById(user);
        return "redirect:/sysadmin/userList";
    }

    @GetMapping("/delete/{id}")
    public String delete(@PathVariable("id") Integer id){

        System.out.println(this.userService.removeById(id));
        return "redirect:/sysadmin/userList";
    }
}

